#pragma once

#include "Networkable.h"
#include "Scene.h"
#include "Level2Manager.h"
#include "Rect.h"

/*!
 * \class Level2
 * \brief 
 */
class Level2 : public game_engine::Scene, public game_engine::Networkable
{
///////////////////////////////////////////////////////////////////////////////
// Attribute definition
///////////////////////////////////////////////////////////////////////////////
private:
    Level2Manager sceneManager;
    BOOL isServer;

///////////////////////////////////////////////////////////////////////////////
// Method definition
///////////////////////////////////////////////////////////////////////////////
public:
    // Constructors and Destructors
    Level2(void);
    Level2(const BOOL server);
    virtual ~Level2(void);

    // Others
    const BOOL initialize(void);
    const BOOL update(const FLOAT32 time);
	//void render(void);
    void finalize(void);

    void createStar(const UINT32 index, const game_engine::utils::Point &position,
        RakNet::RPC3 *rpcFromNetwork);    
    void createScoreBoard(RakNet::RPC3 *rpcFromNetwork);
    void removeObject(RakNet::RakString objName, RakNet::RPC3 *rpcFromNetwork);
    //void createEnemy(RakNet::RPC3 *rpcFromNetwork);
    void createPlayer(RakNet::RPC3 *rpcFromNetwork);

private:
    void createObjects(void);
    void createTerrain(void);
    //void createPlayer(void);
    void createHUD(void);
    void createPowerups(void);
    void createCameras(void);

};
